home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / embedded / m68k / tutor.arc / E.SA < prev    next >
Text File  |  1990-01-05  |  7KB  |  190 lines

  1. E        IDNT      1,0       VERSAbug entry point                    01/08/81
  2.  
  3.          XDEF      DECODE6
  4.          XDEF      DECODE21
  5.          XDEF      INITVECT
  6.          XDEF      MACSBUG
  7.          XDEF      MACSBUG1
  8.          XDEF      NOCMD
  9.          XDEF      START
  10.          XDEF      START1S
  11.  SPC 1
  12.          XREF      ABORTE
  13.          XREF.S    BPTILL
  14.          XREF.S    ECHOPT1
  15.          XREF      FIRST
  16.          XREF      FIXBUF
  17.          XREF      FIXDATA
  18.          XREF.S    INFROM
  19.          XREF      INITHRAM
  20.          XREF      MSG001
  21.          XREF      OUTPUT
  22.          XREF      OUTPUT2
  23.          XREF.S    OUTTO
  24.          XREF      PORTIN1
  25.          XREF.S    REGA7
  26.          XREF.S    REGPC
  27.          XREF.S    REGSR
  28.          XREF.S    REGUS
  29.          XREF      SWAPOUT
  30.          XREF      SOLIST
  31.          XREF.S    SYSTACK
  32.          XREF      TCMDHOT
  33.          XREF.S    TRACEON
  34.          XREF      WHAT
  35.  
  36.  PAGE
  37.          SECTION   9
  38.  
  39. **********************
  40. * INITIALIZE VECTORS *
  41. **********************
  42. *                            Set most vectors to point at "????" routine
  43. INITVECT LEA       8,A0      Skip (Restart) STACK & ADDRESS vectors
  44.          LEA       ABORTE(PC),A1   A1 = "Default" TRAP ERROR routine address
  45.  SPC 1
  46. INIT0    MOVE.L  A1,(A0)+    INITIALIZE VECTOR
  47.          CMP.L #$400,A0      Done?
  48.          BMI.S INIT0         *
  49.          RTS
  50.  
  51. * SPECIAL ENTRY THAT DOES NOT CHANGE VECTORS
  52. START1S  MOVEM.W   D0,REGSR+2          Assure good parity.
  53.          MOVE.W    SR,REGSR+2          SAVE TARGET'S STATUS REGISTER
  54.          MOVE.L    A7,REGA7            SAVE TARGET'S STACK
  55.          MOVE.L    (A7),REGPC          .PROGRAM COUNTER
  56.          LEA       REGA7,A7
  57.          MOVEM.L   D0-D7/A0-A6,-(A7)   .REGISTERS
  58.          LEA       SYSTACK,A7
  59.          BRA       START11
  60.  SPC 3
  61. ************************
  62. *    INITIALIZATION    *
  63. ************************
  64.  SPC 1
  65. * SAVE PROCESSOR REGISTERS (EXCEPT A7 & PC)
  66. START    MOVEM.W   D0,REGSR+2          Assure good parity
  67.          MOVE.W    SR,REGSR+2          SAVE STATUS REGISTER
  68.          MOVEM.L   D0-D7/A0-A6,-(A7)
  69.  SPC 1
  70.          LEA       SYSTACK,A7  SET UP STACK
  71.          MOVE.L    A7,REGA7
  72.  SPC 1
  73.          CLR.L     D1
  74.          MOVE.L    D1,REGPC  PC = 000000
  75.  
  76.          BSR       INITVECT
  77. *  OPTIONAL MODULES LINK IN HERE (SECTION 9)
  78.  PAGE
  79.          SECTION   10
  80. START11  MOVE.W #$2700,SR    MASK OFF INTERRUPTS
  81.  SPC 1
  82.          MOVE.L    USP,A0
  83.          MOVE.L    A0,REGUS  USER STACK
  84.  SPC 1
  85.          BSR     INITHRAM    ZERO (INITIALIZE) HIGH RAM
  86.  SPC 5
  87. *  OPTIONAL MODULES LINK IN HERE (SECTION 10)
  88.  PAGE
  89.          SECTION   11
  90. ************************************************************************
  91. *                    V E R S I O N   N U M B E R   A N D   P R O M P T *
  92. ************************************************************************
  93.  SPC 2
  94. MACSBUG  MOVE.W #$2700,SR  MASK OFF INTERRUPTS
  95.          LEA       SYSTACK,A7  RESTORE SYSTEM STACK
  96.          BSR SWAPOUT  GET BP OUT OF USER MEMORY
  97.  SPC 1
  98.          CLR.L BPTILL GET RID OF 'TILL' BREAKPOINT
  99.          CLR.L OUTTO  INITIALIZE I/O TO DEFAULT
  100.          CLR.L INFROM INITIALIZE I/O TO DEFAULT
  101.          CLR.B     ECHOPT1   NO ECHO TO PORT1
  102.  SPC 1
  103.          LEA       MSG001(PC),A5                >   (Prompt)
  104.          BSR       FIXDATA
  105.  SPC 1
  106.          TST.W TRACEON  SEE IF IN TRACE MODE
  107.          BEQ.S MACSBUG1
  108.          MOVE.B #':',(A6)+  IN TRACE MODE
  109. MACSBUG1 MOVE.B #'>',(A6)+  PROMPT
  110.          MOVE.B #' ',(A6)+   .. SPACE
  111.          BSR OUTPUT  GO PRINT IT
  112.  PAGE
  113. * INPUT LINE
  114.          BSR FIXBUF    GET READY FOR INPUT
  115.          BSR PORTIN1  GET A COMMAND
  116. DECODE6  MOVE.B #' ',(A6)  BLANK OUT END+1
  117. *
  118. *  DECODE A COMMAND
  119. *
  120. *  DECODE SPECIAL CHARACTER USAGE:
  121. *    LEADING SPACES IGNORED
  122. *    LEADING NULLS IGNORED
  123. *    IF SECOND CHAR  *  CHAR CAN BE ANY CHAR
  124.          CMP.L A6,A5  SEE IF ANYTHING ENTERED
  125.          BMI.S DECODE1
  126.          TST.W TRACEON  SEE IF IN TRACE MODE
  127.          BNE       TCMDHOT   DIRECT TO TRACE 1 COMMAND
  128.  SPC 1
  129. DECODE1  CMP.L A6,A5  SEE IF AT END OF BUFFER
  130.          BHI WHAT  GO TO 'WHAT' IF CONFUSED
  131.          MOVE.B (A5),D0  GRAB FIRST CHARACTER
  132.          CMP.B #'*',D0  SEND LINE COMMAND
  133.          BNE.S DECODE10
  134.          ADD.L #1,A5 GET PAST PHOENY PROMPT
  135.          BSR OUTPUT2  SEND LINE+CR (NO LF) TO PORT2
  136.          BRA MACSBUG  REENTER COMMAND MODE
  137.  SPC 1
  138. DECODE10 CMP.B #$20,D0  IGNORE LEADING SPACES
  139.          BNE.S DECODE2  WHERE TO GO IF NOT A SPACE
  140.          ADD.L #1,A5  BUMP START OF BUFFER
  141.          BRA.S DECODE1  TRY NEXT CHARACTER
  142. *
  143. DECODE2  MOVE.B (A5),D1   GET 2 LETTERS OF COMMAND
  144.          LSL.W #8,D1      MAKE ROOM FOR SECOND CHAR
  145.          MOVE.B 1(A5),D1  GET SECOND CHAR
  146.          CLR.L     D3        D3 = CLEAR "NO" SWITCH
  147.  SPC 1
  148. DECODE21 LEA       SOLIST(PC),A1       A1 = COMMAND LIST ADDRESS
  149. DECODE4  MOVE.W    (A1)+,D2  D2 = 2 CHAR COMMAND FROM LIST
  150.          CLR.L     D0        CLEAR HIGH BITS
  151.          MOVE.W    (A1)+,D0  D0 = OFFSET FROM START OF ROM
  152.  SPC 1
  153.          TST.L     D3
  154.          BEQ.S     DECODE41  NOT A "NO"
  155.          TST.B     D2     IS "NO" OPTION SUPPORTED THIS COMMAND?
  156.          BPL       DECODE4   NO...THEN RUN OUT OF COMMANDS
  157.  SPC 1
  158. DECODE41 AND.W     #$7F7F,D2 CLEAR "INVISABLE" & "NO" BITS
  159.          CMP.W     #$7F7F,D2 END OF LIST?
  160.          BEQ       WHAT      Command not found
  161.  SPC 1
  162.          CMP.B #'*',D2  SEE IF DONT CARE CHARACTER
  163.          BNE.S     DECODE3
  164.          MOVE.B D1,D2  DEFAULT
  165.  SPC 1
  166. DECODE3  CMP.W     D1,D2     Command from table = the input?
  167.          BNE       DECODE4   COMMAND NOT FOUND
  168.  
  169.          CLR.W TRACEON       TURN OFF TRACE MODE
  170.  SPC 1
  171.          ADD.L     #2,A5               POINT A5 PAST 2 DIGIT COMMAND
  172.  SPC 1
  173.          PEA.L     FIRST(PC)           BUILD GO TO ADDRESS
  174.          ADD.L     D0,(A7)             ON STACK.
  175.          ADD.L     D3,(A7)             *
  176.  SPC 1
  177.          MOVE.L    (A7)+,A0            GO TO COMMAND
  178.          JSR       (A0)                * SAVE MARK FOR RETURN
  179.          BRA       MACSBUG             *  RETURN HERE
  180. * PAGE
  181. *
  182. *    NO COMMAND
  183. *
  184. NOCMD    MOVE.L    #-4,D3    SET "NO" SWITCH
  185.          MOVE.B    (A5),D1  MOVE CHAR #3
  186.          ASL.W     #8,D1     MOVE OVER 1 CHAR
  187.          MOVE.B    1(A5),D1  MOVE CHAR #4
  188.          BRA       DECODE21  WHICH "NO" COMMAND?
  189.  SPC 1
  190.          END